package org.yi.fc.controller.base;

import org.apache.commons.lang.StringUtils;
import org.yi.fc.cache.GlobalCache;
import org.yi.fc.model.Pager;

import com.jfinal.core.Controller;

/**
 * Controller基类， 放一些Controller中的公共方法
 * @author qq
 *
 */
public class BaseController extends Controller {
	
	/** http get请求 **/
	protected static final String METHOD_GTE = "get";
	/** http post请求 **/
	protected static final String METHOD_POST = "post";
	
	/** 请求处理成功 */
	protected static final String SUCCESS = "1";
	
	/** 请求处理失败 */
	protected static final String ERROR = "0";
	
	/**
	 * 在request对象中添加返回信息
	 * @param msg		返回前台的信息
	 */
	protected void addMessage(String msg){
		setAttr("msg", msg);
	}
	/**
	 * 在request对象中添加返回信息
	 * @param msg		返回前台的信息
	 * @param params	参数
	 */
	protected void addMessage(String msg, Object... params) {
		msg = String.format(msg, params);
		addMessage(msg);
	}
	/**
	 * 在request对象中添加返回前台的错误信息
	 * @param msg
	 */
	protected void addError(String msg){
		setAttr("error", msg);
	}
	/**
	 * 在request对象中添加返回信息
	 * @param msg		返回前台的信息
	 * @param params	参数
	 */
	protected void addError(String msg, Object... params) {
		msg = String.format(msg, params);
		addError(msg);
	}
	
	/**
	 * 跳转到全局错误页面
	 */
	public void error() {
		render("error.html");
	}
	
	/**
	 * 获取客户端请求方式，如get和post等
	 * @return
	 */
	protected final String getHttpMethod(){
		return getRequest().getMethod();
	}
	
	/**
	 * 是否是get方法访问
	 * @return
	 */
	protected boolean isGetMethod(){
		return METHOD_GTE.equalsIgnoreCase(getHttpMethod());
	}
	
	/**
	 * 是否是post方法访问
	 * @return
	 */
	protected boolean isPostMethod(){
		return METHOD_POST.equalsIgnoreCase(getHttpMethod());
	}
	
	protected Pager getPager() {
		int pageNumber = StringUtils.isBlank(getPara("pn")) ? 1 : getParaToInt("pn");
		int pageSize = StringUtils.isBlank(getPara("size")) ? GlobalCache.DEFAULT_PAGESIZE : getParaToInt("size");
		return new Pager(pageNumber, pageSize);
	}
	
}
